Newer
Older
pixi.js / examples / alien benchmark / js / StressTest.js
@Mat Groves Mat Groves on 21 Jan 2013 2 KB Alpha version


$(document).ready(onReady)

$(window).resize(resize)
window.onorientationchange = resize;

var width = 480;
var height = 320;

var aliens = [];

var maxX = width;
var minX = 0;
var maxY = height;
var minY = 0;

var startAlienCount = 100;
var isAdding = false;
var count = 0;
var loader;
var alienFrames = ["eggHead.png", "flowerTop.png", "helmlok.png", "skully.png"];

function onReady()
{
	loader = new PIXI.AssetLoader(["GameAssets.json"])
	
	loader.addEventListener( 'loaded', function ( event ) {
		init();
	} );
	
	loader.load();
}

function init()
{
	renderer = PIXI.autoDetectRenderer(800, 600);
	
	stage = new PIXI.Stage;
	
	document.body.appendChild(renderer.view);
	
	stats = new Stats();
	
	document.body.appendChild( stats.domElement );
	stats.domElement.style.position = "absolute";
	stats.domElement.style.top = "0px";
	requestAnimFrame(update);
	
	resize();
	
	// add a bunch of aliens
	for (var i = 0; i < startAlienCount; i++) 
	{
		var alien = new PIXI.Sprite.spriteFromFrame(alienFrames[i % 4]);
		alien.position.x = Math.random() * maxX;
		alien.position.y = Math.random() * maxY;
		alien.anchor.x = 0.5;
		alien.anchor.y = 0.5;
		aliens.push(alien);
		
		stage.addChild(alien);
	}
	
	// add some events counter
	$(renderer.view).mousedown(function(){
		isAdding = true;
	});
	
	$(renderer.view).mouseup(function(){
		isAdding = false;
	})
	
	document.addEventListener("touchstart", onTouchStart, true);
	document.addEventListener("touchend", onTouchEnd, true);
	
	// add the bunny counter
	counter = document.createElement("div");
	counter.className = "counter";
	document.body.appendChild( counter);
	
	count = startAlienCount;
	counter.innerHTML = count + " ALIENS";
	
	
}

function onTouchStart(event)
{
	isAdding = true;
}

function onTouchEnd(event)
{
	isAdding = false;
}

function resize()
{
	var width = $(window).width(); 
	var height = $(window).height(); 
	
	maxX = width;
	maxY = height;

	renderer.resize(width, height);
	
	for (var i = 0; i < aliens.length; i++) 
	{
		var alien = aliens[i];
		alien.position.x = Math.random() * maxX;
		alien.position.y = Math.random() * maxY;
	}
}

function update()
{
	stats.begin();
	
	if(isAdding)
	{
		// add 10 at a time :)
		
		for (var i = 0; i < 2; i++) 
		{
			var alien = PIXI.Sprite.spriteFromFrame(alienFrames[count % 4]);
			alien.position.x = Math.random() * maxX;
			alien.position.y = Math.random() * maxY;
			alien.anchor.x = 0.5;
			alien.anchor.y = 0.5;
			alien.rotation = Math.random() - 0.5;
			stage.addChild(alien);
			count++;
			aliens.push(alien);
		}
		
		counter.innerHTML = count + " ALIENS";
	}
	
	for (var i = 0; i < aliens.length; i++) 
	{
		var alien = aliens[i];
		alien.rotation += 0.05;
	}

	renderer.render(stage);
	requestAnimFrame(update);
	stats.end();
}